package cn.neusoft.utils;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;

public class JsonUtils {

    /**
     * 将一个json字符串转成一个实体类对象
     * json字符串--->JSONObject---->通过BeanUtils转成实体类对象 例如Employee
     * @param jsonStr
     * @param tClass
     * @param <T>
     * @return
     */
    public static <T> T jsonStrToObj(String jsonStr,String pattern,Class<T> tClass){
        //将json字符串转成json对象
        JSONObject jsonObj = (JSONObject)JSONObject.parse(jsonStr);
        //对象中如果有日期类型的属性  设置转换方式(日期字符串转成日期对象)
        ConvertUtils.register(new DateConverter(pattern),java.util.Date.class);
        T t = null;
        try {
            //通过反射创建一个给定的实体类对象   参数列表中Class<T> tClass传递的是Business.class 那么t就是Business类型
            t = tClass.newInstance();
            //将一个map中的kv对转成实体类对象中的对应的属性值
            BeanUtils.populate(t,jsonObj);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return t;
    }

}
